<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //   a ?? b  只要a不为null、undefined，就取a
        console.log('' ?? 123);// ''
        console.log('' || 123);// 123

        /*
            他们两个最大的区别就是:
            - 空字符串和数值0，??的左侧为空字符串或者为0的时候，依然会返回左侧的值;
            - 而 || 会对左侧的数据进行boolean类型转换，所以''和0会被转换成false,返回右侧的值
        */

        // 比如这里，我们想关注的是这个obj到底有没有name，而不是是否为空字符串
        let obj = {
            name:''
        }
        console.log(obj.name || '没有name属性');//没有name属性
        console.log(obj.name ?? '没有name属性');//''
    </script>
</body>
</html>